#include <stdio.h>
#include <stdbool.h>
#include <math.h>
// 判断一个数是否为素数
bool is_prime(int num) {
    if (num <= 1) return false;
    if (num == 2) return true;
    if (num % 2 == 0) return false;
    
    int limit = sqrt(num);
    for (int i = 3; i <= limit; i += 2) {
        if (num % i == 0) return false;
    }
    return true;
}

int main() {
    int a, b;
    
    // 输入验证
    do {
        printf("请输入区间下限a和上限b（用空格分隔，b最大为100000）：");
        if (scanf("%d %d", &a, &b) != 2) {
            printf("输入格式错误，请输入两个整数！\n");
            // 清除输入缓冲区
            while (getchar() != '\n');
            continue;
        }
        if (a < 2 || b < a || b > 100000) {
            printf("输入范围错误，请确保2≤a≤b≤100000！\n");
        }
    } while (a < 2 || b < a || b > 100000);
    
    printf("在区间 [%d, %d] 内的素数有：\n", a, b);
    
    int count = 0;  // 计数器，用于控制每行显示的素数个数
    for (int i = a; i <= b; i++) {
        if (is_prime(i)) {
            printf("%8d", i);
            count++;
            if (count % 6 == 0) {
                printf("\n");
            }
        }
    }
    
    // 如果最后一行没有满6个，也换行
    if (count % 6 != 0) {
        printf("\n");
    }
    
    printf("共有 %d 个素数。\n", count);
    
    return 0;
}
